// 用户认证功能
class AuthManager {
    constructor() {
        this.currentUser = null;
        this.users = this.loadUsers();
    }
    
    // 从JSON文件加载用户数据
    loadUsers() {
        try {
            const data = localStorage.getItem('iInvestUsers');
            return data ? JSON.parse(data) : [];
        } catch (error) {
            console.error('加载用户数据失败:', error);
            return [];
        }
    }
    
    // 保存用户数据到JSON文件
    saveUsers() {
        try {
            localStorage.setItem('iInvestUsers', JSON.stringify(this.users));
            return true;
        } catch (error) {
            console.error('保存用户数据失败:', error);
            return false;
        }
    }
    
    // 用户注册
    register(userData) {
        // 检查用户名是否已存在
        if (this.users.find(user => user.username === userData.username)) {
            return { success: false, message: '用户名已存在' };
        }
        
        // 检查邮箱是否已存在
        if (this.users.find(user => user.email === userData.email)) {
            return { success: false, message: '邮箱已被注册' };
        }
        
        // 创建新用户
        const newUser = {
            id: this.generateUserId(),
            username: userData.username,
            email: userData.email,
            password: this.hashPassword(userData.password), // 实际应用中应使用更安全的加密
            riskProfile: userData.riskProfile || 'balanced',
            createdAt: new Date().toISOString(),
            lastLogin: null
        };
        
        this.users.push(newUser);
        
        if (this.saveUsers()) {
            return { success: true, message: '注册成功' };
        } else {
            return { success: false, message: '注册失败，请重试' };
        }
    }
    
    // 用户登录
    login(username, password) {
        const user = this.users.find(u => 
            (u.username === username || u.email === username) && 
            u.password === this.hashPassword(password)
        );
        
        if (user) {
            this.currentUser = user;
            user.lastLogin = new Date().toISOString();
            this.saveUsers();
            
            // 保存登录状态到sessionStorage
            sessionStorage.setItem('currentUser', JSON.stringify(user));
            
            return { success: true, user: user };
        } else {
            return { success: false, message: '用户名或密码错误' };
        }
    }
    
    // 用户登出
    logout() {
        this.currentUser = null;
        sessionStorage.removeItem('currentUser');
        return { success: true };
    }
    
    // 检查登录状态
    checkAuth() {
        if (this.currentUser) return true;
        
        const storedUser = sessionStorage.getItem('currentUser');
        if (storedUser) {
            this.currentUser = JSON.parse(storedUser);
            return true;
        }
        
        return false;
    }
    
    // 生成用户ID
    generateUserId() {
        return 'user_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);
    }
    
    // 密码哈希（简化版，实际应用应使用更安全的方法）
    hashPassword(password) {
        // 注意：这只是一个简单示例，生产环境应使用bcrypt等安全哈希算法
        let hash = 0;
        for (let i = 0; i < password.length; i++) {
            const char = password.charCodeAt(i);
            hash = ((hash << 5) - hash) + char;
            hash = hash & hash; // 转换为32位整数
        }
        return hash.toString();
    }
}